// ==UserScript==  
// @name         拉看书 - 简化章节阅读页面v2+自动下一章+按钮
// @namespace    http://tampermonkey.net/  
// @version      0.1  
// @description  当存在class=content时，简化网页仅显示class=content的内容和“下一章”按钮  
// @author       您的名字  
// @match        *://*.lakanshu.cc/read/*  
// @grant        none  
// @updateURL    https://gitee.com/bigona3/youhou_jb/raw/master/%5Ball%5Dlakanshu.cc_jianhua+xiazhang+button.js
// ==/UserScript==  
  
(function() {  
    'use strict';  
    // 获取当前页面的域名
    var currentHost = window.location.host;

    // 定义变量c，用于存储选择器
    var ifjianhua;//本页寻找元素，是否需要简化
    var zhangjie;  //本页zhangjie，下页reader-m-fix?
    var body;
	var xiazhang;

    // 检查当前页面的域名
    if (currentHost.endsWith('lakanshu.cc') || currentHost.endsWith('www.lakanshu.cc')) {
        //xiazhang = '.m-footer a[href="/"]'; // 如果是baidu.com或其子域名，则定义c为'a[href]'
        ifjianhua='.content';//【content，三级】
        //ifjianhua='reader-m-fix';//不会简化
        zhangjie = '.container'; // 如果是id=reader-m-fix【container，二级】
        body='reader-m-fix';//只会简化，不会自动下一章【body，一级】
		xiazhang='next_url';//【nexturl，三级】

    } else if (currentHost.endsWith('quanben-xiaoshuo.com') || currentHost.endsWith('www.quanben-xiaoshuo.com')) {
        body='body[itemscope="itemscope"]';
        zhangjie='.box';
        ifjianhua='articlebody';
		xiazhang = 'a[rel="next"]'; // 如果是51.com或其子域名，则定义c为'info_url'

    } else if (currentHost.endsWith('mayiwsk.com') || currentHost.endsWith('www.mayiwsk.com')) {
        body='body[itemscope="itemscope"]';
        zhangjie='.box';
        ifjianhua='articlebody';
		xiazhang = 'a[rel="next"]'; // 如果是51.com或其子域名，则定义c为'info_url'

    } else {
        
		xiazhang='#next_url';

    }

// 定义容器+按钮	
	var btncontainer=document.createElement('div');
	btncontainer.style.position = 'fixed';
    btncontainer.style.bottom = '0';
    btncontainer.style.left = '0';
    btncontainer.style.right = '0';// 确保容器宽度等于视窗宽度
    btncontainer.style.display = 'flex';
    btncontainer.style.justifyContent = 'center'; // 水平居中
    //btncontainer.style.padding = '10px 0'; // 上下内边距
    btncontainer.style.zIndex = '10000'; // 确保按钮在最上层
	
	const gotopbutton = document.createElement('button');
	gotopbutton.textContent = '【home】';
	gotopbutton.style.flex = '1'; // 等分容器宽度	const 
    gotopbutton.onclick = function() {  
        window.scrollTo(0, 0);  
    };  
    btncontainer.appendChild(gotopbutton);  

    const gobottombutton = document.createElement('button');  
    gobottombutton.textContent = '【end】'; 
	gobottombutton.style.flex = '1'; // 等分容器宽度	
    gobottombutton.onclick = function() { 
        var distance=Math.round(document.body.scrollHeight/10*9);
        window.scrollTo(0,distance);
        //window.scrollTo(0, document.body.scrollHeight-100);  
    };  
    btncontainer.appendChild(gobottombutton); 	
	
	const shanghuabutton = document.createElement('button');
	shanghuabutton.textContent = '上滑';
	shanghuabutton.style.flex = '1'; // 等分容器宽度	const 
    shanghuabutton.onclick = function() {  
        window.scrollBy(0, -300);  
    };  
    btncontainer.appendChild(shanghuabutton);  

    const xiahuabutton = document.createElement('button');  
    xiahuabutton.textContent = '下滑';  
	xiahuabutton.style.flex = '1'; // 等分容器宽度
    xiahuabutton.onclick = function() {  
        window.scrollBy(0, 300);  
    };  
    btncontainer.appendChild(xiahuabutton); 	
    const rebutton=document.createElement('button');
    rebutton.textContent='刷';
    rebutton.style.flex=1;
    rebutton.onclick=function(){
      window.location.reload();
    };
    btncontainer.appendChild(rebutton);
	
	
    // 检查【当前页】是否存在class为content的元素  ——只是为了判断是否需要简化
    const contentElement = document.querySelector(ifjianhua);
  
    if (contentElement) {  
        // 如果存在，则移除所有内容，只保留content元素和下一章按钮  
        // 注意：这里的实现方式可能需要根据页面的具体结构进行调整  
  
        // 创建一个新的div来放置我们想要保留的内容  
        const newContainer = document.createElement('div');  
  
        // 将content元素添加到新容器中  
        newContainer.appendChild(contentElement);  
  
        // 查找并复制“下一章”按钮（如果存在）
        const nextChapterLink = document.getElementById(xiazhang);
        if (nextChapterLink) {  
            // 为了美观，可以创建一个新的div来包裹“下一章”按钮，并添加一些样式（如果需要）  
            const nextChapterContainer = document.createElement('div');  
            nextChapterContainer.style.marginTop = '20px'; // 或者其他适当的样式  
            nextChapterContainer.appendChild(nextChapterLink);  
            newContainer.appendChild(nextChapterContainer);  
        }  
  
        // 清空body并添加新容器  
        document.body.innerHTML = ''; // 注意：这会移除所有事件监听器和动态加载的脚本  
        document.body.appendChild(newContainer);  
		document.body.appendChild(btncontainer);
  
        // 如果需要，可以在这里重新添加一些全局的样式或脚本  
    }  

//简化前
// body id="reader-m-fix"
	// div class=header
		// div class=container,id=container
		    // div class=reader-main
                // div class=content,id=conntent
                // div class="section-opt m-bottom-opt"
			        // a id=next_url

// 假设简化后
// body id="reader-m-fix"
	// div【后加的容器,newContainer=div
		// div class=content,id=content【爬取下章的元素，#container，含有content+nexturl
		// div sytle=
			// a id=next_url
			
	
    // 获取容器元素  
    //const container = document.getElementById('container');
	//const container = document.getElementById('reader-m-fix'); //必须是reader-m-fix，因为是body！！！【必须是body，为一级】
    const container = document.getElementById(body);
  
    // 监听滚动事件  
    window.addEventListener('scroll', function() {  
        // 检查是否滚动到底部  
        if (window.innerHeight + window.scrollY >= document.body.offsetHeight - 50) {  
            // 尝试获取下一章的链接  
            //const nextUrl = document.getElementById('next_url').href;
            const nextUrl = document.getElementById(xiazhang).href;
  
            if (nextUrl) {  
                // 加载下一章节的内容  
                fetch(nextUrl)  //爬取下一章
                    .then(response => response.text())  
                    .then(html => {  
                        // 假设新的内容也包含在一个类似的id="container"的div中  
                        // 这里需要更复杂的DOM解析，这里只是简单示例  
                        const parser = new DOMParser();  
                        const doc = parser.parseFromString(html, 'text/html');  
                        //const newContainer = doc.querySelector('#container');  //新容器，取content+nexturl
                        const newContainer = doc.querySelector(zhangjie);
  
                        if (newContainer) {  
                            // 替换当前内容  
                            container.innerHTML = newContainer.innerHTML;  //body的reader-m-fix主体，用xiazhang得到的zhangjie【.container=content+nexturl】
							document.body.appendChild(btncontainer);
							
                            // 滚动回页面顶部  
                            window.scrollTo(0, 0);  
  
                            // 可能需要更新一些链接或事件监听器  
                        }  
                    })  
                    .catch(error => console.error('Error fetching next chapter:', error));  
            }  
        }  
    });  	
  
    // 如果不存在class为content的元素，则不执行任何操作  
})();